import access from '@/access';
const { checkPermissionAuth } = access();

/**
 * 实现大数据页面的的动态计算，设计稿为1920*1080的设计，如果屏幕不够会使用缩放来展示，并且超过高度出现滚动条，全屏下铺满
 * @param allWidth //设计宽度
 * @param allHeight //设计高度
 * 监听页面尺寸变化 window.addEventListener("resize", computeDataV); window.removeEventListener("resize", computeDataV);
 */
export const computeDataV = (allWidth: number = 1920, allHeight: number = 1080) => {
  // const html = `
  //     <body>
  //         <div style={{overflow: 'hidden'}} class="datav-main">
  //              <div style={{'transform-origin': 'left top'}} class="data-v">datav</div>
  //         </div>
  //     </body>
  // `;
  const currentWidth = document.body.clientWidth;
  const dom = document.getElementsByClassName('data-v');
  //使用宽度定义缩放的比例
  //@ts-ignore
  dom[0].style.transform = `scale(${currentWidth / allWidth})`;

  const clientWidth = document.documentElement.clientWidth;
  const clientHeight = document.documentElement.clientHeight;

  const bodyDom = document.getElementsByTagName('body');

  //如果高度不超出屏幕 隐藏滚动条 因为缩放导致滚动滚条不准确，计算动态的高度
  if (allWidth / allHeight > clientWidth / clientHeight) {
    bodyDom[0].style.overflow = 'hidden';
  } else {
    bodyDom[0].style.overflow = 'auto';
    const mainDom = document.getElementsByClassName('datav-main');
    //@ts-ignore
    mainDom[0].style.height = allHeight * (currentWidth / allWidth) + 'px';
  }
};

/**
 * 获得对于tab是否有权限和返回第一个选中的key
 * @param list
 * @returns
 */
export const getTabListDataAuth = (
  list: {
    tab: string;
    key: string;
    auth?: any;
  }[],
): {
  /**
   * 默认的key
   */
  key: string;
  /**
   * 返回的有权限的数据
   */
  list: {
    tab: string;
    key: string;
    auth?: any;
  }[];
} => {
  const newList: any = [];
  let defaultKey: any = null;
  list.forEach((item: any) => {
    if (
      item.auth &&
      !checkPermissionAuth({
        accessId: item.auth,
      })
    ) {
    } else {
      if (!defaultKey) {
        defaultKey = item.key;
      }
      newList.push(item);
    }
  });
  return { key: defaultKey, list: newList };
};
